﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BPM.Entity;
using System.Collections.ObjectModel;
using System.Linq.Expressions;

namespace BPM.ViewModel
{
	public class MenuViewModel
	{
		public static readonly Dictionary<int, MenuType[]> EnabledMenus = new Dictionary<int, MenuType[]>()
        {
            {SysRoles.Manager.Id, new MenuType[]{
                MenuType.查看所有物料,
                MenuType.用户管理,
				//MenuType.日志管理,
                MenuType.审批物料, MenuType.审批进货单, MenuType.待审核出库申请,
                MenuType.待审核入库申请, 
                MenuType.退出,
            }},
            {SysRoles.Buyer.Id, new MenuType[]{ 
                MenuType.物料类别管理,
                MenuType.现有物料管理, MenuType.添加物料, MenuType.批量导入物料,
                MenuType.新建进货单, MenuType.我的进货单_采购员, 
                MenuType.退出, 
            }},
            {SysRoles.StorageManager.Id, new MenuType[]{
                MenuType.查看所有物料,
                MenuType.物料入库, MenuType.物料出库, MenuType.进货单_库管员, 
                MenuType.退出, 
            }},
            {SysRoles.AssembleManager.Id, new MenuType[]{
                MenuType.查看所有物料,
                MenuType.成品组装定义, MenuType.所有产品, MenuType.成品组装, 
                MenuType.退出
            }},
            {SysRoles.AssembleStaff.Id, new MenuType[]{
                MenuType.成品组装,
                MenuType.退出,
            }},
        };

		public MenuViewModel(MenuType type, string actionName, string controllerName)
			: this(MenuCategory.进销存, type, actionName, controllerName) { }

		public MenuViewModel(MenuCategory category, MenuType type, string actionName, string controllerName)
		{
			this.Category = category;
			this.Type = type;
			this.ActionName = actionName;
			this.ControllerName = controllerName;
		}

		public MenuCategory Category { get; private set; }

		public MenuType Type { get; private set; }

		public string ActionName { get; private set; }

		public string ControllerName { get; private set; }
	}

	public enum MenuCategory
	{
		系统管理, 
		进销存,
		其它
	}

	public enum MenuType
	{
		退出,
		用户管理,
		日志管理,
		现有物料管理,
		物料类别管理,
		添加物料,
		审批物料,
		批量导入物料,
		新建进货单,
		审批进货单,
		我的进货单_采购员,
		进货单_库管员,
		查看所有物料,
		物料入库,
		待审核入库申请,
		物料出库,
		待审核出库申请,
		成品组装定义,
		所有产品,
		成品组装,
	}
}
